﻿// CPP_STL.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <vector>
#include<algorithm>
#include<functional>
#include <iostream>

using namespace std;

int main()
{
    std::cout << "Hello World!\n";

    int ia[6] = { 27,210,12,47,109,83 };
    vector<int>  vi(ia, ia + 6);     //将数组的头尾放入  则将这个数组放入了vector
    //定义vector的时候 原来应该是 std::vector<int, allocator<int>>    
    //这里的分配器allocator默认不写 用于对vector 分配内存用的动作

    //count_if 来自标准库 用于计算符合给定条件的数据数量
    //begin end 来自迭代器   这里头尾都输入  说明放了整个数组  前闭后开区间  end指向的是数组最后一个数据之后的一个位置
    //less  比大小
    // bind2nd 绑定第二参数  这里用于less和40比较
    //not1 否定  即反向  小于条件则变为大于套件
    cout << count_if(vi.begin(), vi.end(), not1(bind2nd(less<int>(), 40)));

    //此处宣告容器的迭代器  指向头部数据
    vector<int>::iterator ite = vi.begin();
    //遍历该容器，不断让迭代器向后推  直到迭代器到最后数据
    for (; ite != vi.end(); ++ite)
    {
        //其他操作
    }
    //CPP11的新迭代语法  循环的写法更加简洁   auto也能减轻类型的推断工作
    for (auto i : ia)
    {
        cout << i << endl;
    }
    for (int i : {34, 6, 7, 234, 6, 1, 55, 88, 9, 5, 3})
    {
        cout << i << endl;
    }

}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
